import { IPSSysSFPlugin } from '../res/ipssys-sfplugin';
import { IPSSystemModule } from '../system/ipssystem-module';
import { IPSModelObject } from '../ipsmodel-object';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSWFRole
 */
export interface IPSWFRole extends IPSModelObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  get psSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块（必须存在）
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModuleMust(): IPSSystemModule;

  /**
   * 角色唯一标记
   * @type {string}
   */
  uniqueTag: string;

  /**
   * 工作流角色数据
   * @type {string}
   */
  userData: string;

  /**
   * 工作流角色数据2
   * @type {string}
   */
  userData2: string;

  /**
   * 工作流角色编号
   * @type {string}
   */
  wFRoleSN: string;

  /**
   * 工作流角色类型
   * @description 值模式 [工作流角色类型] {USERGROUP：用户组、 SYSUSERROLE：系统角色、 CUSTOM：自定义、 DEDATASET：实体数据集合、 ORG：当前组织、 PORG：当前组织父组织、 ORGSECTOR：当前部门、 PORGSECTOR：当前部门父部门、 ORGGROUP：机构组、 ORGSECTORGROUP：部门组、 ORGUSERGROUP：机构人员组、 ORGSECTORUSERGROUP：部门人员组、 ORGADMIN：当前组织管理员、 ORGSECTORADMIN：当前部门管理员 }
   * @type {( string | 'USERGROUP' | 'SYSUSERROLE' | 'CUSTOM' | 'DEDATASET' | 'ORG' | 'PORG' | 'ORGSECTOR' | 'PORGSECTOR' | 'ORGGROUP' | 'ORGSECTORGROUP' | 'ORGUSERGROUP' | 'ORGSECTORUSERGROUP' | 'ORGADMIN' | 'ORGSECTORADMIN')}
   */
  wFRoleType:
    | string
    | 'USERGROUP'
    | 'SYSUSERROLE'
    | 'CUSTOM'
    | 'DEDATASET'
    | 'ORG'
    | 'PORG'
    | 'ORGSECTOR'
    | 'PORGSECTOR'
    | 'ORGGROUP'
    | 'ORGSECTORGROUP'
    | 'ORGUSERGROUP'
    | 'ORGSECTORUSERGROUP'
    | 'ORGADMIN'
    | 'ORGSECTORADMIN';
}
